package com.gitee.qdbp.general.marketing.api.activity.model;

import com.gitee.qdbp.base.annotation.DataIsolation;
import com.gitee.qdbp.base.annotation.OperateTraces;
import com.gitee.qdbp.base.enums.DataState;
import com.gitee.qdbp.general.marketing.enums.ActivityState;

/**
 * 活动主实体类
 *
 * @author zhh
 * @version 181114
 */
@OperateTraces(id = "id")
@DataIsolation(enable = false)
public class ActivityCoreBean extends ActivityCoreBase {

    /** 版本序列号 **/
    private static final long serialVersionUID = 1L;

    /** 表名 **/
    public static final String TABLE = "aty_activity_core";

    /** 活动编号 **/
    private String id;

    /** 活动状态(1.未开始|2.进行中|3.已暂停|4.已结束) **/
    private ActivityState activityState;

    /** 数据状态:0为正常|其他为删除 **/
    private DataState dataState;

    /** 获取活动编号 **/
    public String getId() {
        return id;
    }

    /** 设置活动编号 **/
    public void setId(String id) {
        this.id = id;
    }

    /** 获取活动状态(1.未开始|2.进行中|3.已暂停|4.已结束) **/
    public ActivityState getActivityState() {
        return activityState;
    }

    /** 设置活动状态(1.未开始|2.进行中|3.已暂停|4.已结束) **/
    public void setActivityState(ActivityState activityState) {
        this.activityState = activityState;
    }

    /** 获取数据状态:0为正常|其他为删除 **/
    public DataState getDataState() {
        return dataState;
    }

    /** 设置数据状态:0为正常|其他为删除 **/
    public void setDataState(DataState dataState) {
        this.dataState = dataState;
    }

    /**
     * 将当前对象转换为子类对象
     *
     * @param clazz 目标类型
     * @return 目标对象
     */
    public <T extends ActivityCoreBase> T to(Class<T> clazz) {
        T instance = super.to(clazz);

        if (instance instanceof ActivityCoreBean) {
            ActivityCoreBean real = (ActivityCoreBean) instance;
            real.setId(this.getId()); // 活动编号
            real.setActivityState(this.getActivityState()); // 活动状态(1.未开始|2.进行中|3.已暂停|4.已结束)
            real.setDataState(this.getDataState()); // 数据状态:0为正常|其他为删除
        }
        return instance;
    }

}
